/**
 * 进行jssdk的校验
 * @param  {[type]} _callback [description]
 * @return {[type]}           [description]
 */
export let getCookie = function (cookies, cookieName, proName) {
    let reg = new RegExp(cookieName + '(.+)')
    let result = reg.exec(cookies)
    if (result.length > 0) {
        return JSON.parse(result[1])[proName]
    }
    return null
}
export let jssdk = function (appname, title, desc, cb) {
    $.ajax({
        url: 'http://www.wit-orange.com/wechat/getconf?url=' + encodeURIComponent(location.href),
        success: function (config) {
            wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                appId: config.appid, // 必填，公众号的唯一标识
                timestamp: config.timestamp, // 必填，生成签名的时间戳
                nonceStr: config.nonceStr, // 必填，生成签名的随机串
                signature: config.signature, // 必填，签名，见附录1
                jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
            })
        },
        error: function (err) {
            console.log(err)
        }
    })
    //
    wx.ready(function () {
        cb.call(null, this)
        wx.onMenuShareTimeline({
            title: title, // 分享标题
            link: DS.linkChange('http://www.wit-orange.com/' + appname + '/load.html'), // 分享链接
            imgUrl: 'http://www.wit-orange.com/' + appname + 'images/shareimg.jpg', // 分享图标
            success: function () {
                // 用户确认分享后执行的回调函数
                DS.sendRepost('appMessage')
                history.go(0)
            },
            cancel: function () {
                // 用户取消分享后执行的回调函数
                history.go(0)
            }
        })
        wx.onMenuShareAppMessage({
            title: title, // 分享标题
            desc: desc, // 分享描述
            link: DS.linkChange('http://www.wit-orange.com/' + appname + '/load.html'), // 分享链接
            imgUrl: 'http://www.wit-orange.com/' + appname + '/images/shareimg.jpg', // 分享图标
            type: '', // 分享类型,music、video或link，不填默认为link
            dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
            success: function () {
                // 用户确认分享后执行的回调函数
                DS.sendRepost('timeline')
                history.go(0)
            },
            cancel: function () {
                // 用户取消分享后执行的回调函数
                history.go(0)
            }
        })

    })
}

export let shareapi = function (appname, title, desc) {
    wx.onMenuShareTimeline({
        title: title, // 分享标题
        link: 'http://www.wit-orange.com/?pagename=' + appname, // 分享链接
        imgUrl: 'http://www.wit-orange.com/image/' + appname + '/shareimg.jpg', // 分享图标
        success: function () {
            // 用户确认分享后执行的回调函数
            history.go(0)
        },
        cancel: function () {
            // 用户取消分享后执行的回调函数
            history.go(0)
        }
    })
    wx.onMenuShareAppMessage({
        title: title, // 分享标题
        desc: desc, // 分享描述
        link: 'http://www.wit-orange.com/' + appname, // 分享链接
        imgUrl: 'http://www.wit-orange.com/' + appname + '/images/shareimg.jpg', // 分享图标
        type: '', // 分享类型,music、video或link，不填默认为link
        dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
        success: function () {
            // 用户确认分享后执行的回调函数
        },
        cancel: function () {
            // 用户取消分享后执行的回调函数
        }
    })
}

/**
 * 传入一个回调函数名,和参数，判断是否是函数，如果是，则回调
 * @param  {String} a 函数名
 * @param  {字符串,也可以是json字符串} b 回调函数的参数
 * @return {[type]}   [description]
 */
export let execCallBack = function (a, b) {
    let params = b || {}
    if (this.isfun(a)) {
        a.call(this, params)
    }
}
export let execCB = function (a, err, b) {
    let params = b || {}
    if (this.isfun(a)) {
        a.call(this, err, params)
    }
}
export let isfun = function (a) {
    if (typeof a === 'function') {
        return true
    }
}
export let guid = function () {
    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
    }

    return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4())
}
export let getVerifyCode = function () {
    return (((1 + Math.random()) * 0x10000) | 0).toString(8).substring(2)
}
export let extendObj = function () { //扩展对象
    let args = arguments //将传递过来的参数数组赋值给args变量
    if (args.length == 1) {
        return args[0]
    }
    if (typeof args[0] !== 'object' || typeof args[1] !== 'object') {
        return
    } else {
        Object.keys(args[1]).map(function (key) {
            args[0][key] = args[1][key]
        })
        return args[0]
    }
}
//实现一系列图片的预加载
//参数sources:图片信息关联数组
//参数callback:回调函数——图片预加载完成后立即执行此函数。
export let loadImages = function (sources, callback) {
    let count = 0,
        images = {},
        imgNum = 0
    for (let src in sources) {
        imgNum++
    }
    for (let src in sources) {
        images[src] = new Image()
        images[src].onload = function () {
            if (++count >= imgNum) {
                callback(images)
            }
        }
        images[src].src = sources[src]
    }
}
export let load = function (opts, cb) {
    let loadText = opts.text
    let bg = opts.bg
    let cw = $(window).width()
    let ch = $(window).height()
    let canvas = document.createElement('canvas')
    canvas.width = cw
    canvas.height = ch
    console.log($('body'))
    $('body').append(canvas)
}

if ($) {
    $.fn.createSelector = function (name, array) {
        let _this = this
        let options = null
        if (array instanceof Array) {
            options = array
        }
        if ($(_this).hasClass('select-picker')) {
            let option_default = $('<div class="select-option-default" data-value="' + options[0] + '" data-name="' + name + '">' + options[0] + '</div>')
            $(_this).append(option_default)
            options.map(function (item) {
                let option = $('<div class="select-option" data-value="' + item + '">' + item + '</div>')
                $(_this).append(option)
            })
        } else {
            console.log('找不到含有.select-picker的元素')
        }
    }
}